Skip to content

Latest commit

 

History

History
63 lines (51 loc) · 2.07 KB

File metadata and controls

63 lines (51 loc) · 2.07 KB

2326. Spiral Matrix IV

You are given two integers m and n, which represent the dimensions of a matrix.

You are also given the head of a linked list of integers.

Generate an m x n matrix that contains the integers in the linked list presented in spiral order (clockwise), starting from the top-left of the matrix. If there are remaining empty spaces, fill them with -1.

Return the generated matrix.

Example 1:

Input: m = 3, n = 5, head = [3,0,2,6,8,1,7,9,4,2,5,5,0] Output: [[3,0,2,6,8],[5,0,-1,-1,1],[5,2,4,9,7]] Explanation: The diagram above shows how the values are printed in the matrix. Note that the remaining spaces in the matrix are filled with -1. 

Example 2:

Input: m = 1, n = 4, head = [0,1,2] Output: [[0,1,2,-1]] Explanation: The diagram above shows how the values are printed from left to right in the matrix. The last space in the matrix is set to -1. 

Constraints:

  • 1 <= m, n <= 105
  • 1 <= m * n <= 105
  • The number of nodes in the list is in the range [1, m * n].
  • 0 <= Node.val <= 1000

Solutions (Python)

1. Solution

# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclassSolution: defspiralMatrix(self, m: int, n: int, head: Optional[ListNode]) ->List[List[int]]: curr=headi, j=0, -1ret= [[-1] *nfor_inrange(m)] whilecurrisnotNone: for (a, b) in [(0, 1)] *n+ [(1, 0)] * (m-1) + [(0, -1)] * (n-1) + [(-1, 0)] * (m-2): ifcurrisNone: breaki+=aj+=bret[i][j] =curr.valcurr=curr.nextm-=2n-=2returnret
close